package com.solution.admin.auth.service;

import java.util.List;
import java.util.Map;

import com.solution.admin.auth.entity.ResourceEntity;
import com.solution.admin.auth.entity.RoleEntity;

/**
 * 资源业务管理层接口
 * 
 * @author zhuoyu
 * @date 2017年4月7日 上午9:22:12
 */
public interface ResourceService {

	/**
	 * 查询资源
	 * 
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author zhuoyu
	 * @date 2017年4月7日 上午9:27:55
	 * @modify <scy> <2017年4月7日 上午9:27:55>
	 */
	public List<ResourceEntity> resourceList();

	/**
	 * 添加资源
	 * 
	 * @param resourceEntity
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author zhuoyu
	 * @date 2017年4月7日 上午9:38:00
	 * @modify <scy> <2017年4月7日 上午9:38:00>
	 */
	public long insertResource(ResourceEntity resourceEntity);

	/**
	 * 修改资源
	 * 
	 * @param resourceEntity
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月7日 上午9:38:07
	 * @modify <scy> <2017年4月7日 上午9:38:07>
	 */
	public int updateResource(ResourceEntity resourceEntity);

	/**
	 * 删除资源
	 * 
	 * @param id
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月7日 上午9:38:15
	 * @modify <scy> <2017年4月7日 上午9:38:15>
	 */
	public int deleteResource(Long id);

	/**
	 * 根据id查询资源详细
	 * 
	 * @param id
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月7日 上午10:46:16
	 * @modify <scy> <2017年4月7日 上午10:46:16>
	 */
	public ResourceEntity getResourceById(Long id);

	/**
	 * 查询用户登录某系统的权限列表
	 * @param param
	 *            userId 用户id systemId 登录系统的id
	 * @return
	 * @author llp
	 * @date 2017年4月18日 上午11:54:38
	 */
	public List<ResourceEntity> listResource(Map<String, Object> param);

	/**
	 * 查询用户菜单
	 * 
	 * @param param
	 *            userId 用户id systemId 登录系统的id
	 * @return
	 * @author llp
	 * @date 2017年4月18日 上午11:54:38
	 */
	public List<ResourceEntity> listResourceMenu(Map<String, Object> param);
	/**
	 * 根据经销商id查询资源
	 * 
	 * @param dealerId
	 *            经销商ID
	 * @return
	 * @author zhuoyu
	 * @date 2017年4月18日 下午7:55:52
	 */
	List<ResourceEntity> getResourceForTree();
	/**
	 * 通过复杂的参数统计资源信息的数量
	 * 
	 * @param paramMap
	 *            参数集合
	 * @return 符合条件的记录数
	 */
	public int listByExCount(Map<String, Object> paramMap);
	/**
	 * 取得某经销商角色的资源列表
	 * @param dealerId 经销商ID
	 * @param roleId 角色ID
	 * @return 符合条件的对象集合
	 */
	List<ResourceEntity> getRoleResourceList( Long roleId);
	/**
	 * 对经销商角色进行资源授权
	 * @param dealerId 经销商ID
	 * @param roleId 角色ID
	 * @param resourceIds 分配的资源ID集合
	 * @param makeIds 通过GEN生成的角色资源唯一ID集合
	 * @return 已分配资源数量
	 */
	public int insertRoleResource(Long roleId,List<String> resourceIds);
	/**
	 * 清除某经销商角色的已分配资源
	 * @param roleId 角色ID
	 * @param dealerId 经销商ID
	 * @return 清除的资源数量
	 */
	public int clearRoleResource(Long roleId);
	
	/**
	 * 取得指定用户的可用菜单项
	 * 
	 * @param dealerId
	 *            经销商编号
	 * @param userId
	 *            用户编号
	 * @return 取得的菜单资源列表（树形有下级）
	 */
	public List<ResourceEntity> getUserMenuList( Long userId);

	/**
	 * 修改用户角色
	 * @param role
	 * @param resourceIds
	 * @return
	 */
	public int modifyRoleResources(RoleEntity role, List<String> resIdsList);
	
	
}
